import JDBC.jdbc_user;
import jie_yue.create_user;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

class de_lu extends JFrame implements ActionListener {

    int n=0;
    JLabel lblNewLabel= new JLabel("用户ID：");
    JLabel lblNewLabel_1 = new JLabel("用户名：");
    JButton button= new JButton("登录");
    JButton button_1= new JButton("退出");
    JButton button_2= new JButton("注册");
    JTextField a= new JTextField();
    JTextField b= new JTextField();
    Swing1 lm = new Swing1();
    Swing2 ln = new Swing2();
    JLabel background;
    ImageIcon originalImage;
    public de_lu() {
        setTitle("登录界面");
        setSize(400, 400);
        setLocation(500,200);
        setLayout(null);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        originalImage = new ImageIcon("img/xl.jpg");// 加载原始图片
        background();//背景图片
        addComponentListener(new ComponentAdapter() {// 添加窗口大小变化监听器
            @Override
            public void componentResized(ComponentEvent e) {
                resizeBackground();
            }
        });

        // 设置控件透明度和样式
        Font labelFont = new Font("宋体", Font.BOLD, 16); // 标签字体：宋体，粗体，16px
        Font buttonFont = new Font("黑体", Font.BOLD, 14); // 按钮字体：黑体，普通，14px

        // 设置标签文本样式
        lblNewLabel.setOpaque(false);
        lblNewLabel.setFont(labelFont);
        lblNewLabel.setForeground(Color.WHITE); // 白色文本

        lblNewLabel_1.setOpaque(false);
        lblNewLabel_1.setFont(labelFont);
        lblNewLabel_1.setForeground(Color.WHITE); // 白色文本

        // 设置按钮文本样式
        button.setOpaque(false);
        button.setContentAreaFilled(false);
        button.setBorderPainted(true);
        button.setFont(buttonFont);
        button.setForeground(Color.white); // 白色文本

        button_1.setOpaque(false);
        button_1.setContentAreaFilled(false);
        button_1.setBorderPainted(true);
        button_1.setFont(buttonFont);
        button_1.setForeground(Color.white); // 白色文本

        button_2.setOpaque(false);
        button_2.setContentAreaFilled(false);
        button_2.setBorderPainted(true);
        button_2.setFont(buttonFont);
        button_2.setForeground(Color.white); // 白色文本

        // 设置输入框样式
        a.setOpaque(false);
        a.setFont(new Font("微软雅黑", Font.PLAIN, 14));
        a.setForeground(Color.WHITE);
        b.setOpaque(false);
        b.setFont(new Font("微软雅黑", Font.PLAIN, 14));
        b.setForeground(Color.WHITE);

        // 设置控件透明度，使其在背景上更清晰
        lblNewLabel.setOpaque(false);
        lblNewLabel_1.setOpaque(false);
        button.setOpaque(false);
        button.setContentAreaFilled(false);
        button.setBorderPainted(true);
        button_1.setOpaque(false);
        button_1.setContentAreaFilled(false);
        button_1.setBorderPainted(true);
        button_2.setOpaque(false);
        button_2.setContentAreaFilled(false);
        button_2.setBorderPainted(true);
        a.setOpaque(false);
        b.setOpaque(false);

        lblNewLabel.setBounds(40, 55, 80, 15);
        lblNewLabel_1.setBounds(40, 105, 80, 15);

        button.setLocation(50,270);
        button.setSize(110,30);

        button_1.setLocation(200,270);
        button_1.setSize(110,30);

        button_2.setLocation(280,330);
        button_2.setSize(110,30);

        a.setBounds(120,50,200,25);
        b.setBounds(120,100,200,25);

        button.addActionListener(this); // 监听事件
        button_1.addActionListener(this); // 监听事件
        button_2.addActionListener(this);//监听事件

        getContentPane().add(lblNewLabel);
        getContentPane().add(lblNewLabel_1);
        getContentPane().add(button);
        getContentPane().add(button_1);
        getContentPane().add(button_2);
        getContentPane().add(a);
        getContentPane().add(b);

        setVisible(true); // 设置可见
    }

    // 设置背景图片的方法
    public void background() {
        ((JPanel) this.getContentPane()).setOpaque(false);
        // 创建一个初始大小的背景标签
        background = new JLabel();
        this.getLayeredPane().add(background, Integer.valueOf(Integer.MIN_VALUE));
        // 初始调整背景图片大小
        resizeBackground();
    }

    // 调整背景图片大小以适应窗口
    private void resizeBackground() {
        if (originalImage == null || originalImage.getImage() == null) {
            return;
        }
        // 获取窗口大小
        Dimension size = getSize();
        // 缩放图片以适应窗口
        Image scaledImage = originalImage.getImage().getScaledInstance(
                size.width, size.height, Image.SCALE_SMOOTH);
        // 更新背景标签
        background.setIcon(new ImageIcon(scaledImage));
        background.setBounds(0, 0, size.width, size.height);
    }

    //判断
    public void actionPerformed(ActionEvent e) {//处理事件
        if(n==3){
            System.exit(0);
        }
        if (e.getSource() == button_1) {
            System.exit(0);
        }
        if (e.getSource() == button_2) {
            new create_user();
        }
        if (e.getSource() == button) {
            int i= Integer.parseInt(a.getText());
            String j=b.getText();
            try{
                Connection conn = jdbc_user.getConnection();
                PreparedStatement pstm1 = conn.prepareStatement("select * from student where stu_id=? and stu_name=?");
                pstm1.setInt(1,i);
                pstm1.setString(2,j);
                PreparedStatement pstm2 = conn.prepareStatement("select * from manager where MANAGER_ID=? and MANAGER_NAME=?");
                pstm2.setInt(1,i);
                pstm2.setString(2,j);
                if(pstm1.executeQuery().next()){
                    JOptionPane.showMessageDialog(null, "学生登录成功！");
                    //进入学生界面
                    lm.GUI(i);
                    //关闭当前窗口
                    this.dispose();
                }
                else if(pstm2.executeQuery().next()){
                    JOptionPane.showMessageDialog(null, "管理员登录成功！");
                    //进入管理员界面
                    ln.GUI();
                    //关闭当前窗口
                    this.dispose();
                }
                else {
                    JOptionPane.showMessageDialog(null, "用户名或密码错误！");
                    n++;
                }
                pstm1.close();
                pstm2.close();
                conn.close();
            } catch (SQLException ea){
                showError("加载失败："+ea.getMessage());
            }
        }
    }
    private void showError(String s) {
        JOptionPane.showMessageDialog(this,s,"错误",JOptionPane.ERROR_MESSAGE);
    }

    public static void main(String[] str) {
        new de_lu();
    }
}